package cn.haona.game.simb.wap.servlet.init;

import java.io.FileInputStream;
import java.io.InputStream;
import java.util.Iterator;
import java.util.List;

import org.dom4j.Attribute;
import org.dom4j.Document;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;

import cn.haona.game.simb.servlet.Util;
import cn.haona.game.simb.wap.servlet.WebDefine;
import cn.haona.game.simb.wap.servlet.init.object.InitObjectParam;

/**
 * 初始化我
 * 
 * @author shenhao
 * 
 */
public class InitWebProject {

	final public static String TAG_IMPORT = "import";
	final public static String ATTR_IMPORT_NAME = "name";

	final public static String ATTR_IMPORT_VALUE_BASIC = "basic";
	final public static String ATTR_IMPORT_VALUE_OBJECT = "object";

	private static InitWebProject iwp = null;

	private InitWebProject() {

	}

	public static InitWebProject getInstance() {
		if (iwp == null) {
			iwp = new InitWebProject();
		}
		return iwp;
	}

	public void initMe(String fileName) {

		// 字符串
		String strXML = Util.getStringFromLoadFile(fileName);

		// 解析数据
		Document document;
		try {
			document = DocumentHelper.parseText(strXML);
			// 跟元素
			Element root = document.getRootElement();

			// 导入的XML
			List<Element> elementImports = root.elements(TAG_IMPORT);
			initImport(elementImports);
		} catch (Exception e) {
			e.printStackTrace();
		}

	}

	/**
	 * 初始化导入
	 * 
	 * @param elements
	 */
	private void initImport(List<Element> elements) {
		Iterator<Element> iteraImprot = elements.iterator();
		// 逐个轮询Import元素
		while (iteraImprot.hasNext()) {
			Element elementImport = iteraImprot.next();
			Iterator<Attribute> iteraAtt = elementImport.attributeIterator();
			// 根据元素的Name分类初始化工作
			while (iteraAtt.hasNext()) {
				Attribute ab = iteraAtt.next();
				// 如果是基础
				if ((ab.getName().equals(ATTR_IMPORT_NAME))
						&& (ab.getText().equals(ATTR_IMPORT_VALUE_BASIC))) {
					initBasic(elementImport);
				}
				// 如果是Object
				else if ((ab.getName().equals(ATTR_IMPORT_NAME))
						&& (ab.getText().equals(ATTR_IMPORT_VALUE_OBJECT))) {
					initObject(elementImport);
				}
			
			}// end while(根据元素的Name分类初始化工作)
			// elementImport.attribute(BASIC)
		}// end while(逐个轮询Import元素)
	}

	/**
	 * 基础
	 * 
	 * @param elementBase
	 */
	private void initBasic(Element elementBasic) {
		//得到基础配置文件的文件名
		String fileName=WebDefine.WEB_APP_REAL_PATH+elementBasic.getTextTrim();
		String strXML=Util.getStringFromLoadFile(fileName);
		//创建处理类
		InitBasicParam ibp=new InitBasicParam();
		ibp.initMe(fileName);
	}
	
	private void initObject(Element elementObject)
	{
		//得到基础配置文件的文件名
		String fileName=WebDefine.WEB_APP_REAL_PATH+elementObject.getTextTrim();
		String strXML=Util.getStringFromLoadFile(fileName);
		//创建处理类
		InitObjectParam iop=new InitObjectParam();
		iop.initMe(fileName);
	}

}
